package com.bodu.system.template.filetemplate;

import com.bodu.system.entity.po.CodeGenConfigPo;
import com.bodu.system.entity.po.CodeGenPo;
import freemarker.template.TemplateException;
import org.springframework.stereotype.Component;

import java.io.IOException;

/**
 * @author Administrator
 */
@Component
public class TemplateFactory {

    private final ControllerJavaTemplate controllerJavaTemplate;

    private final ServiceJavaTemplate serviceJavaTemplate;

    private final ServiceImplJavaTemplate serviceImplJavaTemplate;

    private final MapperJavaTemplate mapperJavaTemplate;

    private final MapperXmlTemplate mapperXmlTemplate;

    private final PoJavaTemplate poJavaTemplate;

    private final VoJavaTemplate voJavaTemplate;

    private final RequestJavaTemplate requestJavaTemplate;

    private final AddOrEditVueTemplate addOrEditVueTemplate;

    private final ListVueTemplate listVueTemplate;

    private final HttpTemplate httpTemplate;

    private final ModelTsTemplate modelTsTemplate;

    public TemplateFactory(ServiceJavaTemplate serviceJavaTemplate, ControllerJavaTemplate controllerJavaTemplate, ServiceImplJavaTemplate serviceImplJavaTemplate, MapperJavaTemplate mapperJavaTemplate, MapperXmlTemplate mapperXmlTemplate, PoJavaTemplate poJavaTemplate, VoJavaTemplate voJavaTemplate, ModelTsTemplate modelTsTemplate, RequestJavaTemplate requestJavaTemplate, AddOrEditVueTemplate addOrEditVueTemplate, ListVueTemplate listVueTemplate, HttpTemplate httpTemplate) {
        this.serviceJavaTemplate = serviceJavaTemplate;
        this.controllerJavaTemplate = controllerJavaTemplate;
        this.serviceImplJavaTemplate = serviceImplJavaTemplate;
        this.mapperJavaTemplate = mapperJavaTemplate;
        this.mapperXmlTemplate = mapperXmlTemplate;
        this.poJavaTemplate = poJavaTemplate;
        this.voJavaTemplate = voJavaTemplate;
        this.modelTsTemplate = modelTsTemplate;
        this.requestJavaTemplate = requestJavaTemplate;
        this.addOrEditVueTemplate = addOrEditVueTemplate;
        this.listVueTemplate = listVueTemplate;
        this.httpTemplate = httpTemplate;
    }

    /**
     * 生成模板
     */
    public void createTemplate(CodeGenPo codeGenPo, CodeGenConfigPo configPo) throws IOException, TemplateException {
        controllerJavaTemplate.createTemplate(codeGenPo, configPo);
        serviceJavaTemplate.createTemplate(codeGenPo, configPo);
        serviceImplJavaTemplate.createTemplate(codeGenPo, configPo);
        mapperJavaTemplate.createTemplate(codeGenPo, configPo);
        mapperXmlTemplate.createTemplate(codeGenPo, configPo);
        poJavaTemplate.createTemplate(codeGenPo, configPo);
        voJavaTemplate.createTemplate(codeGenPo, configPo);
        requestJavaTemplate.createTemplate(codeGenPo, configPo);
        addOrEditVueTemplate.createTemplate(codeGenPo, configPo);
        listVueTemplate.createTemplate(codeGenPo, configPo);
        httpTemplate.createTemplate(codeGenPo, configPo);
        modelTsTemplate.createTemplate(codeGenPo, configPo);
    }
}
